A graphical user interface or GUI is a type of user interface that allows a user to interact with a computer and computer-controlled devices. A GUI presents graphical icons, visual indicators or graphical elements, sometimes in conjunction with text, labels or text navigation, to represent information and actions available to the user. Instead of offering only text menus, or requiring typed commands, an action is usually performed through direct manipulation of graphical interface elements.
A control is an interface element with which the user interacts, such as a window or a text box. A control provides a single interaction point for the direct manipulation of a particular kind of data. Controls are visual basic building blocks which, when combined in an application, hold the data processed by the application and control the available interactions on the data.
Families of common reusable controls for holding general information are available. Different implementations of these generic controls are often packaged together in toolkits, used to build GUIs. A number of different technologies and runtime libraries are available to support GUIs. Often several technologies are combined to present a desired GUI solution. Combining technologies is difficult, typically involving a number of layers and is apt to introduce fragility in the resulting solution.